#ifndef CONTEXT_H_
#define CONTEXT_H_

#include "student.h"
#include <set>

using boost::shared_ptr;

/// Encapsulates context information for evaluating whether sequence
/// requirements are met.
class Context {
    std::set<shared_ptr<class Requirement> > met_requirements_;
    Student student_;

public:
    Context(const Student&);

    Student student() const;
    void student(const Student&);
    void check_requirement(shared_ptr<Requirement>);
    bool requirement_met(shared_ptr<Requirement>);
};

#endif
